package huya_live

// import (
// 	"crypto/md5"
// 	"encoding/base64"
// 	"encoding/hex"
// 	"fmt"
// 	"net/url"
// 	"regexp"
// 	"strconv"
// 	"strings"
// 	"time"
// )

// func genLiveUrl(e string) string {
// 	// 1. Split the input string on the first "?" to get the base URL (i) and the query string (b)
// 	parts := strings.Split(e, "?")
// 	if len(parts) < 2 {
// 		return ""
// 	}
// 	i := parts[0]
// 	b := parts[1]

// 	// 2. Split the base URL by "/" and remove file extension (.flv or .m3u8)
// 	r := strings.Split(i, "/")
// 	re, err := regexp.Compile(`\.(flv|m3u8)`)
// 	if err != nil {
// 		return ""
// 	}
// 	s := re.ReplaceAllString(r[len(r)-1], "") // remove file extension

// 	// 3. Split the query string by "&" and filter out empty values
// 	c := strings.Split(b, "&")
// 	var params []string
// 	for _, item := range c {
// 		if item != "" {
// 			params = append(params, item)
// 		}
// 	}

// 	// 4. Create a map to store query parameters
// 	kvs := make(map[string]string)
// 	params2 := make([]string, 0)
// 	for _, param := range params {
// 		kv := strings.Split(param, "=")
// 		if len(kv) == 1 {
// 			params2 = append(params2, kv[0])
// 			continue
// 		}
// 		if len(kv) == 2 {
// 			kvs[kv[0]] = kv[1]
// 		}
// 	}
// 	wsTime, ok := kvs["wsTime"]
// 	if !ok {
// 		return ""
// 	}

// 	// 5. URL decode the 'fm' parameter
// 	fm, err := url.QueryUnescape(kvs["fm"])
// 	if err != nil {
// 		fmt.Println("Error decoding 'fm' parameter:", err)
// 		return ""
// 	}

// 	// 6. Base64 decode the 'fm' parameter
// 	////URLEncoding? StdEncoding?
// 	u, err := base64.URLEncoding.DecodeString(fm)
// 	if err != nil {
// 		// fmt.Println("Error decoding base64:", err)
// 		return ""
// 	}

// 	// 7. Split the decoded string and get the first part
// 	p := strings.Split(string(u), "_")[0]

// 	// 8. Generate a current timestamp and multiply by 1e7
// 	// x us; seqid=x*10
// 	seqid := strconv.FormatInt(time.Now().UnixNano()/100, 10)

// 	// 10. Set a constant 't' value (fixed as '0')
// 	t := "0"

// 	// 11. Construct the string for MD5 hash
// 	h := fmt.Sprintf("%s_%s_%s_%s_%s", p, t, s, seqid, wsTime)

// 	// 12. Generate the MD5 hash
// 	hash := md5.New()
// 	hash.Write([]byte(h))
// 	wsSecret := hex.EncodeToString(hash.Sum(nil))

// 	// 13. Get the last query parameter (seqid)
// 	if len(params) < 3 {
// 		return ""
// 	}

// 	// del kvs[wsSecret]
// 	delete(kvs, "wsSecret")
// 	delete(kvs, "wsTime")
// 	delete(kvs, "seqid")
// 	// params2 := make([]string, 0)
// 	for k, v := range kvs {
// 		params2 = append(params2, k+"="+v)
// 	}

// 	// params2 := params[3:]
// 	otherArgs := strings.Join(params2, "&")

// 	// 14. Construct the final URL
// 	url := fmt.Sprintf("https:%s?wsSecret=%s&wsTime=%s&u=%s&seqid=%s&%s", i, wsSecret, wsTime, t, seqid, otherArgs)

// 	return url
// }

// // func main() {
// // 	// Example usage of the live function
// // 	e := "http://example.com/video.flv?fm=cGFyX3ZpZGVvX3RlY2hfbWFya2V0cmlwbHVz&wsTime=1234567890&seqid=9876543210"
// // 	url := live(e)
// // 	fmt.Println(url)
// // }
